#ifndef STACK_H
#define STACK_H

#include "../../lib/common.h"
#include "../../lib/linked_list.h"

typedef LinkedListNode Node;

typedef struct
{
  Node *top; // 头节点作为栈顶
  int size; // 栈长度
} Stack;

Stack *init_stack(); // 初始化空栈
int get_length(Stack *stack); // 获取长度
bool is_empty(Stack *stack); // 判断是否是空栈
void push(Stack *stack, int value); // 入栈
int peek(Stack *stack); // 访问栈顶的值
int pop(Stack *stack); // 出栈
void print_stack(Stack *stack); // 打印栈
void destory_stack(Stack *stack); // 销毁栈

#endif